﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Linq;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2507Data
    {
        /// <summary>
        /// 申报来源
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "dcla_souc")]
        public string DclaSouc { get; set; }

        /// <summary>
        /// 险种类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "insutype")]
        public string Insutype { get; set; }

        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 人员参保关系ID
        /// 参数类型：字符型
        /// 参数长度：20
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "psn_insu_rlts_id")]
        public string PsnInsuRltsId { get; set; }

        /// <summary>
        /// 人员证件类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_cert_type")]
        public string PsnCertType { get; set; }

        /// <summary>
        /// 证件号码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "certno")]
        public string Certno { get; set; }

        /// <summary>
        /// 人员姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_name")]
        public string PsnName { get; set; }

        /// <summary>
        /// 性别
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "gend")]
        public string Gend { get; set; }

        /// <summary>
        /// 民族
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "naty")]
        public string Naty { get; set; }

        /// <summary>
        /// 出生日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "brdy")]
        public string Brdy { get; set; }

        /// <summary>
        /// 联系电话
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "tel")]
        public string Tel { get; set; }

        /// <summary>
        /// 联系地址
        /// 参数类型：字符型
        /// 参数长度：500
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "addr")]
        public string Addr { get; set; }

        /// <summary>
        /// 参保所属医保区划
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "insu_admdvs")]
        public string InsuAdmdvs { get; set; }

        /// <summary>
        /// 单位编号
        /// 参数类型：字符型
        /// 参数长度：40
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "emp_no")]
        public string EmpNo { get; set; }

        /// <summary>
        /// 单位名称
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "emp_name")]
        public string EmpName { get; set; }

        /// <summary>
        /// 就医地医保区划
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "mdtrtarea_admdvs")]
        public string MdtrtareaAdmdvs { get; set; }

        /// <summary>
        /// 定点医药机构编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_code")]
        public string FixmedinsCode { get; set; }

        /// <summary>
        /// 定点医药机构名称
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_name")]
        public string FixmedinsName { get; set; }

        /// <summary>
        /// 医院等级
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "hosp_lv")]
        public string HospLv { get; set; }

        /// <summary>
        /// 入院时间
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "adm_time")]
        public string AdmTime { get; set; }

        /// <summary>
        /// 受伤时间
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "trum_time")]
        public string TrumTime { get; set; }

        /// <summary>
        /// 受伤地点
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "trum_site")]
        public string TrumSite { get; set; }

        /// <summary>
        /// 致伤原因
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "trum_rea")]
        public string TrumRea { get; set; }

        /// <summary>
        /// 审核支付标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "chk_pay_flag")]
        public string ChkPayFlag { get; set; }

        /// <summary>
        /// 代办人姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_name")]
        public string AgnterName { get; set; }

        /// <summary>
        /// 代办人证件类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_cert_type")]
        public string AgnterCertType { get; set; }

        /// <summary>
        /// 代办人证件号码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_certno")]
        public string AgnterCertno { get; set; }

        /// <summary>
        /// 代办人联系方式
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_tel")]
        public string AgnterTel { get; set; }

        /// <summary>
        /// 代办人联系地址
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_addr")]
        public string AgnterAddr { get; set; }

        /// <summary>
        /// 代办人关系
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "agnter_rlts")]
        public string AgnterRlts { get; set; }

        /// <summary>
        /// 开始日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "begndate")]
        public string Begndate { get; set; }

        /// <summary>
        /// 结束日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "enddate")]
        public string Enddate { get; set; }

        /// <summary>
        /// 备注
        /// 参数类型：字符型
        /// 参数长度：500
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "memo")]
        public string Memo { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2507InputModel
    {
        [DataMember(Name = "data")]
        public SI2507Data SI2507Data { get; set; }
    }

    /// <summary>
    /// 2507
    /// 人员定点备案
    /// </summary>
    [DataContract]
    public class SI2507RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI2507InputModel Input { get; set; }

        public SI2507RequestModel(MedicalInsuranceOption medicalInsuranceOption,
            SI2507Data si2507Data) : base(medicalInsuranceOption)
        {
            Infno = "2507";
            Input = new SI2507InputModel();
            Input.SI2507Data = si2507Data;
        }
    }
}
